IMPINT page# 0001 next
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
IMPINT page# 0002 next prev
21: SUBTTL IMP INTERRUPT-LEVEL DRIVERS - JAM, SEPT '71
22:
23:
24:
25: TEST←←100000
26: STRIN←←040000
27: I32←←020000
28: O32←←010000
29: CLRST←←004000
30: CLRWT←←002000
31: STROUT←←000200
32: FINO←←000100
33: IEPIEN←←000040
34: IDPIEN←←000020
35: ODPIEN←←000010
36:
37: ISTART←←STRIN!CLRWT!IEPIEN!IDPIEN!IMPCHN
38:
39:
40:
41: RDY←←200000
42: TEST←←100000
43: IMPERR←←040000
44: IDONE←←020000
45: IEND←←010000
46: ODONE←←004000
IMPINT page# 0003 next prev
48:
49:
50:
51: ↑IBEGIN:
52: PUSHJ P,SETUP
53: JRST IHANG
54: CONI IMP,AC3
55: BLKI IMP,IMPBKO
56: JFCL
57: MOVE AC1,IMPICUR
58: MOVEM AC1,IMPITOP
59: TRNE AC3,IEND
60: JRST INPDONE
61: CONO IMP,CLRWT
62: PUSHJ P,ISYNC
63: SECOND: CONI IMP,AC3
64: BLKI IMP,IMPBKO
65: JFCL
66: TRNE AC3,IEND
67: JRST INPDONE
68: MOVE AC1,IMPITOP
69: LDB AC2,SIZEP
70: SETOM IMPIFM
71: SKIPG AC3,BPW(AC2)
72: MOVEI AC3,44
73: CAIN AC3,40
74: SETZM IMPIFM
75: IDIVM AC3,AC2
76: MOVEI AC3,(AC2)
77: LDB AC2,COUNTP
78: IDIVI AC2,(AC3)
79: MOVEM AC2,IMPINW
80: SETZM IMPIMS
81: JUMPE AC3,INPLOP
82: LDB AC2,SIZEP
83: MOVNS AC2
84: IMULI AC2,(AC3)
85: MOVSI AC1,400000
86: ASH AC1,1(AC2)
87: MOVEM AC1,IMPIMS
IMPINT page# 0004 next prev
89:
90:
91: INPLOP: MOVEI AC1,CLRWT!CLRST!IDPIEN!IEPIEN!IMPCHN
92: SKIPN IMPIFM
93: ORI AC1,I32
94: CONO IMP,(AC1)
95: PUSHJ P,ISYNC
96: INP1: CONI IMP,AC3
97: BLKI IMP,IMPBKO
98: JFCL
99: SOSL IMPINW
100: JRST INPET
101: HRRZ AC2,IMPBKO
102: MOVE AC1,IMPIMS
103: ANDM AC1,(AC2)
104: SETZM IMPIMS
105: INPET: TRNE AC3,IEND
106: JRST INPDONE
107: SKIPGE IMPBKO
108: JRST INPLOP
109: MOVEI AC1,CLRWT!IDPIEN!IEPIEN!IMPCHN
110: SKIPN IMPIFM
111: ORI AC1,I32
112: CONO IMP,(AC1)
113: PUSHJ P,ISYNC
114: PUSHJ P,SETUP
115: JRST IDHANG
116: JRST INP1
IMPINT page# 0005 next prev
118:
119:
120: IHANG: SETOM IMPITOP
121: PUSHJ P,HANG
122: JRST IHEWAIT
123: MOVE AC1,IMPICUR
124: MOVEM AC1,IMPITOP
125: JRST SECOND
126:
127: IDHANG: PUSHJ P,HANG
128: JRST IHEWAIT
129: JRST INP1
130:
131: HANG: AOS NHANGS
132: CONI IMP,AC1
133: DATAI IMP,IMPHELP
134: SETOM IMPHLF
135: TRNE AC1,IEND
136: POPJ P,
137: MOVEI AC1,IEPIEN!IDPIEN
138: SKIPN IMPIFM
139: ORI AC1,I32
140: CONO IMP,(AC1)
141: PUSHJ P,ISYNC
142: PUSHJ P,HLPWRD
143: AOS (P)
144: JRST GETSPARE
145:
146:
147:
148: HLPWRD: MOVE AC1,[XWD 1,1]
149: ADDB AC1,IMPBKO
150: MOVE AC2,IMPHELP
151: SETZM IMPIHD
152: SETZM IMPHLF
153: MOVEM AC2,(AC1)
154: POPJ P,
IMPINT page# 0006 next prev
156:
157:
158: INPDONE:
159: PUSHJ P,IFINISH
160: CONO IMP,ISTART
161: INIWAIT:
162: PUSHJ P,ISYNC
163: JRST IBEGIN
164:
165:
166:
167:
168:
169: IHEWAIT:
170: SETOM IMPIHD
171: CONO IMP,IDPIEN!IEPIEN
172: JRST INIWAIT
IMPINT page# 0007 next prev
174:
175:
176:
177: IFINISH:
178: AOS NMESIN
179: MOVE AC1,IMPICUR
180: SETZM IMPICUR
181: HLRE AC2,IMPBKO
182: ADD AC2,TLEN(AC1)
183: MOVEM AC2,TWC(AC1)
184: MOVE AC1,IMPITOP
185: SKIPN AC2,ILIST
186: JRST IFINI1
187: MOVSS AC2
188: HRLM AC1,TLINK(AC2)
189: IFINI2: HRLM AC1,ILIST
190: HRRZS TLINK(AC1)
191: POPJ P,
192:
193: IFINI1: HRRM AC1,ILIST
194: JRST IFINI2
IMPINT page# 0008 next prev
196:
197:
198:
199:
200:
201: SETUP: PUSHJ P,SETUP0
202: JRST NOSPARE
203: PUSHJ P,GETSPARE
204: JRST CPOPJ1
205:
206: SETUP0: SETZ AC1,
207: EXCH AC1,IMPSPARE
208: JUMPE AC1,CPOPJ
209: SETZM TLINK(AC1)
210: MOVN AC2,TWC(AC1)
211: HRLI AC1,(AC2)
212: SKIPE AC2,IMPICUR
213: HRRM AC1,TLINK(AC2)
214: HRRZM AC1,IMPICUR
215: ADDI AC1,TDATA-1
216: MOVEM AC1,IMPBKO
217: JRST CPOPJ1
IMPINT page# 0009 next prev
219:
220:
221: GETSP: SETZM IMPCLN
222: SKIPE IMPDEAD
223: POPJ P,
224: GETSPARE:
225: PUSHJ P,IMPGET
226: JRST NOSPARE
227: EXCH AC1,IMPSPARE
228: SKIPE AC1
229: PUSHJ P,IMPREL
230: SKIPN IMPHLF
231: POPJ P,
232: PUSHJ P,SETUP0
233: JRST NOSPARE
234: SKIPN IMPIHD
235: JRST GETSP1
236: PUSHJ P,HLPWRD
237: MOVE AC1,IMPICUR
238: SKIPGE IMPITOP
239: MOVEM AC1,IMPITOP
240: PUSHJ P,IFINISH
241: CONO IMP,ISTART
242: JRST GETSPARE
243:
244: GETSP1: SETZM IMPHLF
245: MOVEI AC1,CLRWT!ODPIEN!IDPIEN!IMPCHN
246: SKIPN IMPIFM
247: ORI AC1,I32
248: CONO IMP,(AC1)
249: POPJ P,
250:
251:
252:
253: NOSPARE:
254: SETO AC1,
255: EXCH AC1,IMPCLN
256: JUMPN AC1,CPOPJ
257: MOVE AC1,[XWD GETSP,0]
258: CONO PI,PIOFF
259: IDPB AC1,CLKQ
260: CONO PI,PION
261: POPJ P,
IMPINT page# 0010 next prev
263:
264:
265: IMPOL: MOVEI AC2,ODPIEN!IMPCHN
266: NXTTFR: SKIPN IMPOFM
267: ORI AC2,O32
268: CONO IMP,(AC2)
269: BLKO IMP,IMPOBK
270: JFCL
271: PUSHJ P,OSYNC
272: ↑OBEGIN:
273: SETOM IMPOACT
274: SOSN IMPOFC
275: SETZM IMPOFM
276: SKIPG IMPOBK
277: JRST IMPOL
278: NXTBLK: MOVE AC1,IMPOCUR
279: SKIPG AC2,RSTHST
280: JRST NOTRST
281: SOS AC2,RSTHST
282: DPB AC2,SRCP
283: CONO IMP,FINO
284: PUSHJ P,OSYNC
285: MOVE AC1,IMPOCUR
286: JRST IMPOD1
287:
288: NOTRST: HRRZ AC2,TLINK(AC1)
289: MOVEM AC2,IMPOCUR
290: PUSHJ P,IMPREL
291: SKIPN AC1,IMPOCUR
292: JRST IMPODN
293: PUSHJ P,SETCNT
294: JRST IMPOL
295:
296: IMPODN: CONO IMP,FINO
297: PUSHJ P,OSYNC
298: AOS NMESOU
299: SKIPN AC1,OLIST
300: JRST OWAIT
301: PUSHJ P,LEGAL
302: JRST [ SETZM OLIST
303: JRST OWAIT]
304: HLRZ AC2,TLINK(AC1)
305: HRRM AC2,OLIST
306: SKIPN AC2
307: SETZM OLIST
308: HRRZM AC1,IMPOCUR
309: IMPOD1: PUSHJ P,SETMOD
310: PUSHJ P,SETCNT
311: MOVEI AC2,STROUT!ODPIEN!IMPCHN
312: JRST NXTTFR
313:
314: DONOP1: CONO IMP,STROUT!ODPIEN!IMPCHN
315: DATAO IMP,[BYTE (8) 4]
316: PUSHJ P,OSYNC
317: DONOP: CONO IMP,FINO
318: PUSHJ P,OSYNC
319: SOSLE NOPCNT
320: JRST DONOP1
321: OWAIT: SETZM IMPOACT
322: CONO IMP,ODPIEN
323: PUSHJ P,OSYNC
324: JRST OBEGIN
IMPINT page# 0011 next prev
326:
327:
328:
329: QOUT: PUSHJ P,LEGAL
330: POPJ P,
331: CONO PI,IMPOFF
332: SKIPN IMPOACT
333: JRST QIDLE
334: PUSH P,AC2
335: SKIPN AC2,OLIST
336: JRST QNOLIST
337: MOVSS AC2
338: HRLM AC1,TLINK(AC2)
339: QOXIT: HRLM AC1,OLIST
340: POP P,AC2
341: HRRZS TLINK(AC1)
342: CONO PI,IMPON
343: POPJ P,
344:
345: QNOLIST:
346: HRRM AC1,OLIST
347: JRST QOXIT
348:
349:
350:
351: QIDLE: CONO PI,IMPON
352: SETOM IMPOACT
353: MOVEM AC1,IMPOCUR
354: PUSH P,AC3
355: PUSHJ P,SETMOD
356: PUSHJ P,SETCNT
357: MOVEI AC3,MAXCNT
358: MOVEM AC3,IMPOCT
359: POP P,AC3
360: CONO PI,IMPOFF
361: CONO IMP,STROUT!ODPIEN!IMPCHN
362: BLKO IMP,IMPOBK
363: JFCL
364: CONO PI,IMPON
365: POPJ P,
IMPINT page# 0012 next prev
367:
368:
369: SETCNT: MOVN AC2,TWC(AC1)
370: HRLI AC2,TDATA-1(AC1)
371: MOVSM AC2,IMPOBK
372: POPJ P,
373:
374:
375:
376:
377: DOLOC: HRRZI DSER,(TAC1)
378: TRNN DSER,400000
379: JRST EOREL
380: PUSH P,TEM
381: LDB TEM,PSEGN
382: HRRZ TEM,JBTADR(TEM)
383: ADDI DSER,-400000(TEM)
384: POP P,TEM
385: POPJ P,
386:
387: EOREL: ADDI DSER,(PROG)
388: POPJ P,
389:
390:
391:
392: SETMOD: LDB AC2,SIZEP
393: MOVEI AC3,2
394: CAIN AC2,44
395: SETO AC3,
396: MOVEM AC3,IMPOFC
397: SETOM IMPOFM
398: POPJ P,
IMPINT page# 0013 next prev
400:
401:
402: ↑IMPINT:
403: CONSO IMP,770
404: JRST IMPOTS
405: MOVEM AC1,IMPAC1
406: MOVEM AC2,IMPAC2
407: MOVEM AC3,IMPAC3
408: EXCH PID,IMPPID
409: EXCH P,IMPIPD
410: JRST @IMPIDSP
411:
412: ISYNC: POP P,IMPIDSP
413: EXCH P,IMPIPD
414: ACREST: MOVE AC1,IMPAC1
415: MOVE AC2,IMPAC2
416: MOVE AC3,IMPAC3
417: EXCH PID,IMPPID
418: JEN @IMPCHL
419:
420:
421:
422: ↑IMPOUT:
423: CONSO IMP,7
424: JRST IMPCTS
425: MOVEM AC1,IMPAC1
426: MOVEM AC2,IMPAC2
427: MOVEM AC3,IMPAC3
428: HRLOI AC3,377777
429: MOVEM AC3,IMPOCT
430: EXCH PID,IMPPID
431: EXCH P,IMPOPD
432: JRST @IMPODSP
433:
434: OSYNC: POP P,IMPODSP
435: MOVEI AC3,MAXCNT
436: SKIPL IMPOACT
437: HRLOI AC3,377777
438: MOVEM AC3,IMPOCT
439: EXCH P,IMPOPD
440: JRST ACREST
441:
442:
443:
444: ↑IMPERB:
445: MOVEM AC1,IMPAC1
446: MOVEI AC1,IDPIEN!IMPCHN
447: SKIPN IMPIFM
448: ORI AC1,I32
449: CONO IMP,(AC1)
450: MOVE AC1,IMPAC1
451: AOS IMPECT
452: JEN @IMPCHL
IMPINT page# 0014 next prev
454: BEND IMPSER
EOF: IMPINT end-of-file. cnt=13